<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>私有属性的访问</title>
</head>
<body>
    
</body>
<script>
    /*
        私有属性的访问 私有属性就是只有当前的类能够访问  继承的类都不能访问的属性就做私有属性
            外部不能访问 继承类可以访问的属性叫做受保护的属性
    */
    class user{
        #name = ''
        show(){
            console.log('hhh')
        }
        constructor(value){
            this.name = value
        }
        get name(){
            return this.#name
        }
        set name(value){
            if(value.length<5){
                throw new Error('字符串长度小于5个')
            }else{
                this.#name = value
            }
        }
    }
    let jimmy = new user('jimmy')
    console.log(jimmy)  //user {#name: "jimmy"}
    /*
        当我们强行的访问私有属性的时候  浏览器就会给我们报错
            如果我们要访问这个私有属性或者修改西游属性  可以使用访问器来进行操作
    */
    // console.log(jimmy.#name)  //Private field '#name' must be declared in an enclosing class
    console.log(jimmy.name)  //jimmy   使用访问器访问

    // jimmy.name = 'xue'  // 字符串长度小于5个

    // class person extends user{
    //     constructor(){
    //         super()
    //     }
    // }
    // let peop = new person()
    // peop.show()
</script> 
</html>